In traditional telecommunications systems, a single Media Gateway Controller (MGC) typically controls several Media Gateway (MG) nodes. The MGC traditionally has the responsibility of interconnecting inbound terminations to outbound terminations across the MG nodes it controls to process a call. A call may typically consist of a pulse code modulated (PCM) stream of data with voice encoded information included within the PCM stream. The interconnection path may span several MG nodes under control of the MGC. Along this interconnection path each MG node may have different resources (e.g., echo cancellation (EC), voice quality enhancement (VQE), different coder/decoder (CODEC), automatic level control (ALC), automatic level enhancement (ALE), which is used to automatically amplify an outbound stream in the presence of noisy inbound stream, automatic noise reduction (ANR), hybrid echo cancellation (HEC), etc.) that can be used to modify the voice information.
In order to establish a call, the MGC selects resources needed for the call from the various resources available on the various MGs under its control. The MGC must then allocate these resources for the new call. In order for the MGC to select and allocate resources, the MGC must know both the resources of each MG along the path and must also know which resources are currently in use and which are currently available on each MG. This knowledge requires a complex state association to be maintained within the MGC for all of the MGs under its control. This state information may additionally need to be communicated between the MGC and each MG node under its control, thereby requiring additional bandwidth to maintain this state information. Communication of allocated resources may be done during call setup and at other times. Accordingly, extensive communication may be required to maintain this state information and to setup and tear down calls. Additionally, knowledge of MG resources may pose a different problem by requiring an MGC to know low-level hardware information about a given MG. One principle of the MG-MGC architecture was the separation of call control and media control functions. Requiring the MGC to maintain low-level hardware resource information about the MGs it manages violates this principle.
All of the above-mentioned aspects of traditional MGCs create a situation requiring complexity in the operation and design of MGCs. MGCs must manage all aspects of the call setup and teardown. MGCs must maintain extensive state information, not only for the given call, but also for each MG associated with each call.
Accordingly, in light of the complexity of existing approaches, there exists a need for improved methods, systems, and computer program products for distributed resource selection and allocation among clustered media gateways in a communications network.